package com.tjec.project.businessWorkbench.service;

import com.tjec.project.businessWorkbench.domain.ArchiveStatusVo;
import com.tjec.project.businessWorkbench.domain.BmsBusinessDocArchive;
import com.tjec.project.businessWorkbench.domain.DocArchiveVo;
import com.tjec.project.businessWorkbench.dto.BmsAttachmentDto;

import java.util.List;

/**
 * 资料归档Service接口
 * 
 * @author pangyongfeng
 * @date 2020-05-18
 */
public interface IBmsBusinessDocArchiveService 
{
    /**
     * 查询资料归档
     * 
     * @param guid 资料归档ID
     * @return 资料归档
     */
    public BmsBusinessDocArchive selectBmsBusinessDocArchiveByGuid(String guid);

    /**
     * 查询资料归档列表
     * 
     * @param bmsBusinessDocArchive 资料归档
     * @return 资料归档集合
     */
    public List<BmsBusinessDocArchive> selectBmsBusinessDocArchiveList(BmsBusinessDocArchive bmsBusinessDocArchive);
    
    /**
     * 查询资料归档列表
     * 
     * @param bmsBusinessDocArchive 资料归档
     * @return 资料归档附件集合
     */
    public List<BmsAttachmentDto> selectAttachments(BmsBusinessDocArchive bmsBusinessDocArchive);
    
    /**
     * 查询资料归档列表
     * 
     * @param bmsBusinessDocArchive 资料归档
     * @return 资料归档集合
     */
    public List<BmsBusinessDocArchive> selectBmsBusinessDocArchiveListInDoc(BmsBusinessDocArchive bmsBusinessDocArchive);

    /**
     * 新增资料归档
     * 
     * @param bmsBusinessDocArchive 资料归档
     * @return 结果
     */
    public int insertBmsBusinessDocArchive(BmsBusinessDocArchive bmsBusinessDocArchive);

    /**
     * 修改资料归档
     * 
     * @param bmsBusinessDocArchive 资料归档
     * @return 结果
     */
    public int updateBmsBusinessDocArchive(BmsBusinessDocArchive bmsBusinessDocArchive) throws Exception;

    /**
     * 批量删除资料归档
     * 
     * @param guids 需要删除的资料归档ID
     * @return 结果
     */
    public int deleteBmsBusinessDocArchiveByGuids(String[] guids) throws Exception;

    /**
     * 删除资料归档信息
     * 
     * @param guid 资料归档ID
     * @return 结果
     */
    public int deleteBmsBusinessDocArchiveByGuid(String guid);


    /**
     * 根据项目ID查询该项目下资料归档
     *
     * @param projectId 项目id
     * @return 结果
     */
    public List<BmsBusinessDocArchive> selectBmsBusinessDocArchiveListByProjectId(String projectId);
    
    /**
     * 根据业务id获取资料归档的状态和是否可以归档的状态
     * @param businessId 业务id
     * @return
     */
    public ArchiveStatusVo selectArchiveAllStatus(String businessId);
    
    /**
     * 根据业务id查询列表
     * @param businessId 业务id
     * @return
     */
    public List<DocArchiveVo> selectDocArchiveByBusinessId(String businessId);

    public List<BmsBusinessDocArchive> selectBmsBusinessDocArchiveListInDocQuery(BmsBusinessDocArchive bmsBusinessDocArchive);
}
